查看原文
其他

MacOS 下Nuikta编译PyQt5程序碰到的坑

alitrack alitrack 2022-10-01



第一次接触它已经是半年多前,尝试着编译了个hello world便因为有事搁置一边。

昨天看到朋友圈里有人安利它,忍不住,又试试了试,成功编译了4个应用

  • hello world

  • pyqt5 hello world

  • pyqt5 与sqlite

  • diffexcel

为了方便记录步骤和输出结果,这次仍然选择了Jupyter Notebook(不过是在VS Code里,感觉在这里更方便)

环境

!conda create -y -n nuitka python=3.7!conda activate nuitkacd nuitka!pip install nuitka pyqt5!python -m nuitka --version

返回

0.6.7Python: 3.7.7 (default, Mar 26 2020, 10:32:53) Executable: /Users/steven/anaconda3/envs/eric/bin/pythonOS: DarwinArch: x86_64


第一个程序,hello world

  • hello.py

%%writefile hello.pydef main(): print("你好 Nuitka!")
if __name__ == "__main__": main()


  • 编译

!python -m nuitka --standalone --clang \--follow-imports hello.py
  • 测试

!hello.dist/hello
  • 成功运行,返回

你好 Nuitka!

完整的helloworld竟然有23M


第二个程序 pyqt5 hello world

  • pyqt5_hello_world.py

%%writefile pyqt5_hello_world.pyimport sysfrom PyQt5 import QtWidgets
app = QtWidgets.QApplication(['HelloWorld'])
button = QtWidgets.QPushButton('Click me!')button.show()
sys.exit(app.exec())
  • 编译

!python -m nuitka --standalone \--windows-disable-console \--enable-plugin=qt-plugins \pyqt5_hello_world.py
  • 运行

!pyqt5_hello_world.dist/pyqt5_hello_world
  • 返回

Segmentation fault: 11

接下来就是漫长的查找原因过程,网上搜索各种资料,没有答案,issues里也有人提到了这个问题,最后的结果让人有些欲哭无泪,就是因为少了一个空目录

mkdir pyqt5_hello_world.dist/PyQt5/Qt
  • 再次运行,成功

窗口有些小,看得到吗?


第三个程序 PyQt5 + SQLite的应用

  • 代码(网上碰巧看到的一个例子),

!git clone https://github.com/Maxzor/ABL_suggcd ABL_sugg
  • 编译

!python -m nuitka --standalone \--windows-disable-console \--plugin-enable=qt-plugins=sqldrivers,iconengines,imageformats,mediaservice,platforms,printsupport \--recurse-not-to=numpy --recurse-all \--output-dir=o main.py

这里需要指定具体enable哪些qt-plugin,主要是在默认plugins的基础上再要引入sqldrivers

  • 测试

#创建空Qt目录mkdir o/main.dist/PyQt5/Qt#数据导入!cat sqlite3_dump.sql|sqlite3 o/main.dist/as.db#运行程序!cd o/main.dist && ./main
  • 成功

第四个程序, Pandas测试

网上找到的一个利用Pandas比较两个Excel差异的例子,命令行,执行成功

这里就先放个执行截图,具体软件的介绍留着下次再详细介绍吧。

生成的output.xlsx总共有3个sheets,分别是removed,added,changed



如果喜欢的话,可以点[在看],或者打赏,如果有什么建议和意见,也欢迎留言,或者加我个人微信,


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存